1. The Field of the Invention
This invention relates to data compression and, more particularly, to novel systems and methods for directly accessing compressed data in memory where the data has been compressed based on a dictionary-based compression scheme.
2. The Background Art
Technological advances have placed capabilities of the main frame computers of 20 years ago in today's desk-top computers. The heart of a computer is the processor. The processor accomplishes the primary work of a computer by executing instructions and processing data. Often these data and instructions are in either a memory device or a storage device. Usually, a processor can access main memory (primary memory) faster than it can access a storage device (secondary memory). Therefore, it is typical to store data soon to be processed in memory rather than on a storage device.
Technological advances have regularly doubled memory capacity of computers. Large-capacity primary memory in personal computers, coupled with significant processor speed improvements, has been relied upon by new software. Meanwhile, multitudes of software products continue to be developed each year. Many of these are very large software products making greater demands on memory devices.
Large software applications (lengthy executable codes) usually take up more memory than do smaller applications when run on a computer. In all computer systems, the amount of memory is limited. When large programs (applications, executables, products) take the majority of available memory, they may relegate processing data in memory to be stored out to a storage device. When the processor requests the processing data from the storage device, retrieval takes much more time than would retrieval from memory.
Higher memory density of data is desirable. More actual executable code and processing data in memory allows the processor to process faster than resorting to a storage device. To relieve limited memory, many consumers simply buy more. Installing more memory increases capacity, but not efficiency. If available memory were used more efficiently, the same benefits may be achieved without the cost.
Compression of the executables and data stored in memory may store more actual information, increasing efficiency in memory. However, this usually requires additional processing. Typically, the processor compresses the data to be placed in memory, consuming valuable processor time. Decompression schemes typically require the processor to decompress the data from memory as needed. Decompression consumes additional processor time. Thus, although the typical compression schemes effectively provide more memory space, they cost valuable processor time, dynamically compressing and decompressing data with each write to and read from memory.
Moreover, the current techniques require an additional area in memory to store the decompressed data. In other words, these techniques decompress data stored in memory to produce decompressed data. This decompressed data is written to an additional, different area in memory. From this area in memory, the processor may access the decompressed data for use. This approach is necessitated because the compressed data is not directly usable. The compressed data must be first decompressed and stored in decompressed form before it is usable by the processor.
Many methods for compressing memory rely on software level operations to compress the memory. These operations may take additional valuable processor time to execute instructions at all lower levels involved, including the operating system level and hardware level. Certain documentation discloses hardware devices to compress data. These devices typically compress faster than software compression methods. Because they accomplish the compression independently, a processor does not have to. However, these devices are typically not integrated into a computer system's architecture.